home *** CD-ROM | disk | FTP | other *** search
- /*
- +----------------------------------------------------+
- | Thunderbird Software |
- +----------------------------------------------------+
- | Filespec : Serial.c |
- | Date : October 24, 1991 |
- | Time : 15:03 |
- | Revision : 1.1 |
- | Update : August 29, 1994 |
- | Update : March 12, 1995 by Bob Stout |
- +----------------------------------------------------+
- | Programmer: Scott Andrews |
- | Address : 5358 Summit RD SW |
- | City/State: Pataskala, Ohio |
- | Zip : 43062 |
- +----------------------------------------------------+
- | Released to the Public Domain |
- +----------------------------------------------------+
- */
-
- #define SerInBufSize 4096 /* Size of input buffer */
- #define SerOutBufSize 512 /* Size of output buffer */
-
- #if defined(__SC__) /* Note: Won't work with older versions of SC/ZTC */
- #include <int.h>
- #define INT_ON int_on
- #define INT_OFF int_off
- #define GETVECT _dos_getvect
- #define SETVECT _dos_setvect
- #elif defined(__TURBOC__)
- #define INT_ON enable
- #define INT_OFF disable
- #else /* assume MSC/QC or compatible */
- #include <conio.h>
- #define INT_ON _enable
- #define INT_OFF _disable
- #define GETVECT _dos_getvect
- #define SETVECT _dos_setvect
- #endif
-
- /* 8250 registers */
-
- #define REC 0 /* Uart receive reg. */
- #define XMIT 0 /* Uart transmit reg. */
- #define INT_EN 1 /* Uart int. enable reg. */
- #define INT_ID 2 /* Uart int. ident. reg. */
- #define LINE_CNTRL 3 /* Uart line control reg. */
- #define MODEM_CNTRL 4 /* Uart modem control reg. */
- #define LINE_STATUS 5 /* Uart line status reg. */
- #define MODEM_STATUS 6 /* Uart modem status reg. */
- #define BAUD_LSB 0 /* Uart baud divisor reg. */
- #define BAUD_MSB 1 /* Uart baud divisor reg. */
-
- #define NONE 0 /* Handshake param none */
- #define HDW 1 /* Handshake param hardware */
- #define XON 2 /* Handshake param software */
-
- /* Interrupt enable register */
-
- #define RX_INT 0x01 /* Receive interrupt mask */
- #define TBE_INT 0x02 /* Transmit buffer empty mask */
- #define ERR_INT 0x04 /* Error interrupt mask */
- #define RS_INT 0x08 /* Line interrupt mask */
-
- /* Interrupt id register */
-
- #define OUT2 0x08 /* Out 2 line */
- #define DTR 0x01 /* DTR high */
- #define RTS 0x02 /* RTS high */
- #define CTS 0x10
- #define DSR 0x20
- #define XMTRDY 0x20
- #define TXR 0 /* Transmit register (WRITE) */
-
- #if !defined TRUE /* Define boolean true/false */
- #define FALSE 0
- #define TRUE !FALSE
- #endif
-
- extern void (_interrupt _far *oldvector_serial )( void);
-
- extern int ComBase; /* Comm port address */
- extern int IrqNum; /* Comm interrupt request */
-
- typedef struct /* Save existing comm params */
- { int int_enable; /* old interrupt enable reg value*/
- int line; /* " line control " " */
- int modem; /* old modem control " " */
- int baud_lsb; /* old baud rate divisor LSD */
- int baud_msb; /* " " " " MSD */
- int int_cntrl; /* old PIC interrupt reg value */
- } OLD_COMM_PARAMS;
- extern OLD_COMM_PARAMS old_comm_params;
-
- typedef struct
- { int line; /* Uart line status reg. */
- int modem; /* Uart mode status reg. */
- int intrupt; /* Uart interrupt reg. */
- int handshake; /* Handshake status */
- } COMM_STATUS; /* status, updated, handler */
- extern COMM_STATUS comm_status;
-
- int OpenComPort ( char Port ); /*setup comm for usage */
- void InitComPort ( char Baud[], char Databits, char Parity, char Stop );
- void CloseComPort ( void ); /* Restore comm port */
- void DropDtr ( void ); /* Lower DTR */
- void RaiseDtr ( void ); /* Raise DTR */
- int ComRecChar ( void ); /* Fetch character from rcv buf*/
-
- int ComSendChar ( char character ); /* Put char into xmit buffer */
- int ComSendString ( char *string );
- int ComStatus ( void ); /* Fetch comm status */
- void _interrupt _far serial ( void ); /* interrupt handler */
-
- /* End of Serial.H */
-